Черновик: DID-методы для ИИ-агентов и устройств (R5)
Для обсуждения. Рабочие имена из заметок команды: did:ru:agent, did:scada:device. Структура — по чеклисту реестра W3C DID Extensions (tooling/spec-review-checklist.md): синтаксис, CRUD, безопасность и приватность. CRUD описан так, как реализовано в ветке feature/todo-261015-2253-did-signed-ops.
0. Имя метода — решить до реализации
Что уже используется в коде: did:scada:UUID-01 (примеры swagger), did:i:fl:<uuid> (персоны), did:i:is:identity-system (система identity), did:pki:ru:guc002 (пример parse). Отдельно: did:pki — уже зарегистрированный чужой метод (Attestto, 2026) для национальных УЦ (did:pki:<страна>:…), наш пример did:pki:ru:guc002 с ним совпадает по смыслу — использовать его для ссылок на российские УЦ можно, свой did:pki заводить нельзя.
Вариант | Плюсы | Минусы |
| читается, совпадает с заметками | пункт M6 чеклиста (имя должно отражать функцию), код страны читается как гос. реестр (M7) — регистрацию могут не принять; национальный метод может появиться у госоператора |
| отражает домен | второй метод со своей спецификацией; SCADA — не про агентов |
один метод с типом сущности, | одна спецификация, один резолвер и чейнкод, имя функциональное | нужно выбрать имя (свободны, проверено 2026-10-15: |
Рекомендация: третий вариант. Ниже <m> — имя метода, примеры с ru как рабочим.
1. Синтаксис
did-m = "did:" method-name ":" entity-type ":" entity-id method-name = "ru" ; рабочее, см. §0 entity-type = "agent" / "device" / "org" entity-id = "z" 1*base58char ; multibase base58btc base58char = %x31-39 / %x41-48 / %x4A-4E / %x50-5A / %x61-6B / %x6D-7A
entity-id — самосертифицируемый: multibase(base58btc) от SHA-256 канонического JWK (RFC 7638, уже есть didkey.Thumbprint) первого ключа из capabilityInvocation начального документа. Следствия:
привязку DID к ключу проверяет кто угодно без реестра — по первой ревизии;
идентификатор не зависит от хранилища: переход PostgreSQL → HLF не меняет ни одного DID;
в идентификаторе нет ни серийного номера устройства, ни реквизитов организации (приватность, стабильность при смене данных). Серийный номер — в VC паспорта (
InstrumentPassportCredential).
Пример формы: did:ru:agent:z<base58btc от 32 байт SHA-256> (≈44 символа после z).
2. Операции
Транспорт — HTTP API did-svc (/api/v1/dids), подпись операции — заголовок DID-Operation-Proof (compact JWS, claims {op, did, prevVersionId, bodyDigest, iat}). Подробно — сценарий did-svc/docs/scenarios/did-signed-operations.md.
Операция | Кто подписывает | Проверки |
Create | сам DID (ключ из создаваемого документа) или |
|
Read | — | resolve по реестру; деактивированный → |
Update |
|
|
Deactivate | то же, | необратимо |
Для агента и устройства: owner — DID зарегистрированной организации; создание подписывает она. Передача владения — два шага (добавить новую организацию в controller, затем она ставит себя owner).
DID URL
DID URL | Результат |
| verification method (есть) |
| service (есть) |
| ревизия 3 (сейчас — |
| текущий манифест агента (R6, не реализовано) |
3. Отношения ключей для агента
Отношение | Назначение для ИИ-агента |
| вход агента в КТМ (challenge-response, R8) |
| подпись VC агента: runtime (R7), результаты анализа |
| изменение собственного DID Document |
| шифрованный канал (X25519), например P2P |
4. Безопасность
Приватные ключи в did-svc не попадают: приватные поля JWK отклоняются, подписи — на стороне клиента (KMS/HSM/CSP).
Повтор операции невозможен: подпись привязана к версии;
iatограничивает окно.Захват документа: полномочия берутся из сохранённой версии, а не из присланной.
Подмена истории в БД: хэш-цепочка + восстановление документа из подписанного тела; полностью — после якорения
headDigestв HLF (проект R4).Компрометация ключа агента: владелец удаляет ключ из документа (Update своей подписью) или деактивирует DID; старые подписи остаются проверяемыми по истории.
ГОСТ Р 34.10-2012 (L3):
didproof.Verifiers.Registerс проверкой на стороне PKI-сервиса.
5. Приватность
В DID Document — только ключи, отношения,
controller/ownerи service endpoints. Реквизиты организации, ФИО, серийные номера — в VC, не в DID.ownerраскрывает, какой организации принадлежит агент/устройство — это осознанно публично (ответственность владельца). Если раскрывать нельзя — вместоownerиспользовать VC-мандат.Самосертифицируемый
entity-idне несёт сведений о субъекте.
6. Регистрация в W3C (если понадобится)
PR с файлом methods/<m>.json (name, status, specification) в w3c/did-extensions, автопроверка формата, AI-предревью спецификации по чеклисту, 2 одобрения мейнтейнеров, 7–30 дней. Для внутреннего использования регистрация не нужна.
Что сделать по итогам обсуждения
Выбрать имя метода (§0).
Валидация синтаксиса и самосертифицируемого
entity-idпри Create (небольшая правкаvalidateDID/CreateDocument: ~0.5 дня с тестами).Параметр
versionIdв resolve.Оформить этот текст как
did-svc/docs/did-method.mdна английском, если пойдём в реестр.
Журнал изменений
Дата | Перечень изменений | Автор |
2026-11-05 | Перенесён из архива DID-VC-итоги-2026-11-03 без изменения содержания. | Дис |